home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / delfin.zip / OPTMAIN1.PAS < prev    next >
Pascal/Delphi Source File  |  1996-08-06  |  4KB  |  137 lines

  1. unit Optmain1;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, Mask, ExtCtrls, Buttons, OvcPF, OvcBase, OvcEF,
  8.   OvcPB, OvcNF, Option;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     Panel1: TPanel;
  13.     Label1: TLabel;
  14.     Label2: TLabel;
  15.     Label3: TLabel;
  16.     Label4: TLabel;
  17.     Label5: TLabel;
  18.     Label6: TLabel;
  19.     Panel2: TPanel;
  20.     SpeedButton1: TSpeedButton;
  21.     Label7: TLabel;
  22.     Label8: TLabel;
  23.     RadioGroup1: TRadioGroup;
  24.     Panel3: TPanel;
  25.     OvcController1: TOvcController;
  26.     StockPrice: TOvcNumericField;
  27.     DDate: TOvcPictureField;
  28.     ExercizeDate: TOvcPictureField;
  29.     IntrestRate: TOvcNumericField;
  30.     StrikePrice: TOvcNumericField;
  31.     Dividende: TOvcNumericField;
  32.     CallPrice: TOvcNumericField;
  33.     Volatility: TOvcNumericField;
  34.     Header1: THeader;
  35.     Label9: TLabel;
  36.     Label10: TLabel;
  37.     Label11: TLabel;
  38.     Label12: TLabel;
  39.     Label13: TLabel;
  40.     Label14: TLabel;
  41.     Delta: TOvcNumericField;
  42.     Gamma: TOvcNumericField;
  43.     Vega: TOvcNumericField;
  44.     Rho: TOvcNumericField;
  45.     Theta: TOvcNumericField;
  46.     Omega: TOvcNumericField;
  47.     CallOption1: TCallOption;
  48.     procedure RadioGroup1Click(Sender: TObject);
  49.     procedure SpeedButton1Click(Sender: TObject);
  50.   private
  51.     { Private declarations }
  52.   public
  53.     { Public declarations }
  54.   end;
  55.  
  56. var
  57.   Form1: TForm1;
  58.  
  59. implementation
  60.  
  61. {$R *.DFM}
  62.  
  63. procedure TForm1.RadioGroup1Click(Sender: TObject);
  64. begin
  65.      if RadioGroup1.ItemIndex=0 then
  66.         begin
  67.         Label7.Visible:=False;
  68.         CallPrice.Visible:=False;
  69.         Label8.Visible:=True;
  70.         Volatility.visible:=True;
  71.         end
  72.      else
  73.         begin
  74.         Label7.Visible:=True;
  75.         CallPrice.Visible:=True;
  76.         Label8.Visible:=False;
  77.         Volatility.visible:=False;
  78.         end;
  79. end;
  80.  
  81. procedure TForm1.SpeedButton1Click(Sender: TObject);
  82. Var
  83.    TimeToMat:double;
  84. begin
  85.      TimeToMat:=(ExercizeDate.AsOvcDate-DDate.AsOvcDate)/365.0;
  86.      if TimeToMat<(1.0/365.0) then
  87.          MessageDlg('Exersize Date must be greater then current date', mtWarning,
  88.          [mbOk], 0)
  89.      else if ((RadioGroup1.ItemIndex=0) and (Volatility.AsFloat<0.001)) then
  90.           MessageDlg('Volatility must be greater then Zero', mtWarning, [mbOk], 0)
  91.        else if ((RadioGroup1.ItemIndex=1) and (CallPrice.AsFloat<0.001)) then
  92.           MessageDlg('Call Price must be greater then Zero', mtWarning, [mbOk], 0)
  93.         else 
  94.          begin
  95.          CallOption1.StockPrice:=StockPrice.AsFloat;
  96.          CallOption1.Intrest:=IntrestRate.Asfloat/100.0;
  97.          CallOption1.ExPrice:=StrikePrice.AsFloat;
  98.          CallOption1.DDate:=DDate.AsDateTime;
  99.          CallOption1.ExDate:=ExercizeDate.AsDateTime;
  100.          CallOption1.Dividends:=Dividende.AsFloat/100.0;
  101.          if (RadioGroup1.ItemIndex=0) then
  102.             begin
  103.             CallOption1.ImpVol:=Volatility.AsFloat/100.0;
  104. {******************************************}
  105. { Full B&S calculation in one line of code.}
  106. {******************************************}
  107.  
  108.             CallPrice.AsFloat:=CallOption1.Price;
  109.  
  110. {******************************************}
  111. {******************************************}
  112.  
  113.             CallPrice.Visible:=True;
  114.             Label7.Visible:=True;
  115.             end
  116.          else
  117.             begin
  118.             CallOption1.Price:=CallPrice.AsFloat;
  119. {*********************************************************}
  120. { Full Implied volatility calculation in one line of code.}
  121. {*********************************************************}
  122.             Volatility.AsFloat:=CallOption1.ImpVol*100.0;
  123.             Volatility.Visible:=True;
  124.             Label8.Visible:=True;
  125.             end;
  126.  
  127.          Delta.AsFloat:=CallOption1.Delta;
  128.          Theta.AsFloat:=CallOption1.Theta;
  129.          Gamma.AsFloat:=CallOption1.Gamma;
  130.          Rho.AsFloat:=CallOption1.Rho;
  131.          Vega.AsFloat:=CallOption1.Vega;
  132.          Omega.Asfloat:=CallOption1.Omega;
  133.          end; { if }
  134. end;
  135.  
  136. end.
  137.